home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / fdimg / oh!.2hd / OH!DEN_B.LZH / TOOLS / ARTPAD / ARTPAD.S
Text File  |  1995-03-20  |  36KB  |  1,926 lines

  1.     *.include    tnb.mac
  2. DI        macro
  3.         ori.w        #$0700,sr
  4.         .endm
  5. EI        macro
  6.         andi.w        #$F8FF,sr
  7.         .endm
  8. SUPER        macro
  9.         moveq        #$81,d0
  10.         trap        #15
  11.         .endm
  12. USER        macro
  13.         moveq        #$81,d0
  14.         trap        #15
  15.         .endm
  16.     *データたまりすぎ度 DaKlsetを越えていたらRSをほぼクリアする
  17. DaKl = 7
  18. DaKl2 = 2
  19.  
  20.     .include    iocscall.mac
  21.     .include    doscall.mac
  22.  
  23. StartStatio:*******************常駐部
  24. SS:
  25.     jmp    init-SS(a4)
  26. head:
  27. HEAD1 = 'ArtP'
  28. HEAD2 = 'ad05'
  29.     .dc.l    HEAD1
  30.     .dc.l    HEAD2
  31.     .even
  32. st:
  33. MSD:    *---------------------------
  34.     *    ($24D)[$0934]    マウスエミュ
  35.     *    マウスデータ変更
  36.     *        a1にワークのアドレスがはいる
  37.  
  38. MSD_    = $0934.w
  39.  
  40.     tst.w    MoEmuMode    *MouseEmu $FF:しない
  41.     bne    MSD_JMP_L
  42.  
  43.     movem.l    d0-d3/a0-a3,-(sp)
  44.  
  45.     bsr    ChkTablet
  46.     bne    no_con        *非コネクト
  47.         ****** TEMCALL work
  48.     tst.b    Data2+3
  49.     beq    @f
  50.     clr.l    Data2
  51. @@:
  52.         *****モードにより分岐
  53.     move.w    DrvMode(pc),d0
  54.     bne    zetta
  55.         *************************相対
  56.     move.w    Conect_(pc),d0        *前の座標がないなら今回は終わり
  57.     bmi    LL1
  58.     move.b    Pdata(pc),d2
  59.     cmpi.b    #2,d2            *筆圧2未満なら終わり
  60.     bcs    LL1
  61.  
  62.         **X計算
  63.     move.w    Xdata(pc),d0
  64.     lsr.w    #2,d0
  65.     move.w    oldXdata(pc),d1
  66.     lsr.w    #2,d1
  67.     sub.w    d1,d0
  68.     swap    d0
  69.         **Y計算
  70.     move.w    Ydata(pc),d0
  71.     lsr.w    #2,d0
  72.     move.w    oldYdata(pc),d1
  73.     lsr.w    #2,d1
  74.     sub.w    d1,d0
  75.  
  76.     btst    #1,SLW+1
  77.     beq    @f
  78.         *X:Y反転
  79.     neg.w    d0
  80.     swap    d0
  81.     neg.w    d0
  82.     swap    d0
  83. @@:
  84.     btst    #0,SLW+1
  85.     beq    @f
  86.         *X:Y反転
  87.     swap    d0
  88.     neg.w    d0
  89. @@:
  90.         **Y計算
  91.     add.b    d0,2(a1)
  92.     add.b    d0,Data2+2    * TEMCALLワーク
  93.         **X計算
  94.     swap    d0
  95.     add.b    d0,1(a1)
  96.     add.b    d0,Data2+1    * TEMCALLワーク
  97.     bra    LL1
  98.         *************************絶対
  99. zetta:
  100.     move.b    1(a1),d2    **マウスが動いていたら終了
  101.     bne    LL1
  102.     move.b    2(a1),d2
  103.     bne    LL1
  104.  
  105.     bsr    SizeTable
  106.  
  107.     move.w    IM(pc),d2
  108.     bne    zetta2
  109.         ******************絶対モード1
  110.     tst.w    $0ade.w            *$0ade.w  IOCSマウス処理中なら!=0らしい
  111.     bne    LL1
  112.  
  113.     move.l    Xdata2(pc),d1
  114.     cmp.l    $0ACE.w,d1        *現在のマウス座標
  115.     beq    LL1            *同じなら終わり
  116.  
  117.     btst.b    #1,KeyMod(pc)
  118.     beq    @f
  119.             *--絶対1のキーボード処理
  120.     *moveq    #$0A,d1    *処理軽減のため..
  121.     *IOCS    _BITSNS
  122.      move.b    $800+$A,d2    *[XF1],[XF2]は押されている?
  123.     bra    zettaKey
  124. @@:
  125.     move.l    Xdata2(pc),d1
  126.     IOCS    _MS_CURST
  127.  
  128.     tst.l    d0
  129.     beq    LL1    *おっけー
  130.         *d2=0になっている
  131. zettaKey:
  132.     btst    #6,d2
  133.     bne    @f    *[XF1]
  134.  
  135.     moveq    #0,d0
  136.     move.w    $0AD0.w,d0    *現在のマウスY座標
  137.     move.l    Xdata2(pc),d1
  138.     clr.w    d1        *andi.l    #$FFFF0000,d1同等
  139.     or.l    d0,d1
  140.     IOCS    _MS_CURST    *まずX設定
  141.  
  142. @@:    btst    #5,d2
  143.     bne    @f
  144.  
  145.     moveq    #0,d1
  146.     move.w    Ydata2(pc),d1
  147.     move.l    $0ACE.w,d0    *現在のマウスX座標
  148.     clr.w    d0        *andi.l    #$FFFF0000,d0同等
  149.     or.l    d0,d1
  150.     IOCS    _MS_CURST    *Y設定
  151. @@:
  152.     bra    LL1    *おっけー
  153.  
  154. zetta2:        ******************絶対モード2
  155.         **X計算
  156.     move.w    Xdata2(pc),d1
  157.     sub.w    $0ACE.w,d1        *現在のマウス座標
  158.     bpl    L_zxpl
  159.             *マイナス
  160.     neg.w    d1
  161.     cmp.w    d2,d1
  162.     bcs    @f
  163.     move.b    d2,d1
  164. @@:    neg.b    d1
  165.     bra    L_zxL
  166. L_zxpl:            *プラス
  167.     cmp.w    d2,d1
  168.     bcs    L_zxL
  169.     move.b    d2,d1
  170. L_zxL:    move.b    d1,1(a1)
  171.     add.b    d1,Data2+1    * TEMCALLワーク
  172.         **Y計算
  173.     move.w    Ydata2(pc),d1
  174.     sub.w    $0AD0.w,d1        *現在のマウス座標
  175.     bpl    L_zypl
  176.             *マイナス
  177.     neg.w    d1
  178.     cmp.w    d2,d1
  179.     bcs    @f
  180.     move.b    d2,d1
  181. @@:    neg.b    d1
  182.     bra    L_ZZ
  183. L_zypl:            *プラス
  184.     cmp.w    d2,d1
  185.     bcs    L_ZZ
  186.     move.b    d2,d1
  187. L_ZZ:    move.b    d1,2(a1)
  188.     add.b    d1,Data2+2    * TEMCALLワーク
  189.  
  190. LL1:    move.w    Xdata(pc),oldXdata
  191.     move.w    Ydata(pc),oldYdata
  192.     move.w    #0,Conect_    *コネクト
  193.         *******************************トリガーチェック
  194.     move.w    BotMod(pc),d0
  195.     bne    BoRev
  196.             *0:プレス=左クリック
  197.     *moveq    #0,d0
  198.     btst    #7,Bdata
  199.     beq    @f
  200.     ori.b    #$2,d0
  201. @@:    btst    #6,Bdata
  202.     beq    @f
  203.     ori.b    #$1,d0
  204. @@:    bra    Trg_LE
  205. BoRev:
  206.     subq.w    #1,d0
  207.     bne    Bo98P
  208.             *1:プレス=右クリック
  209.     *moveq    #0,d0
  210.     btst    #7,Bdata
  211.     beq    @f
  212.     ori.b    #$1,d0
  213. @@:    btst    #6,Bdata
  214.     beq    @f
  215.     ori.b    #$2,d0
  216. @@:    bra    Trg_LE
  217. Bo98P:
  218.             *2: PC9801P
  219.     moveq    #0,d0
  220.     btst    #6,Bdata
  221.     beq    Trg_LE        *プレスしていないならおわり
  222.     btst    #7,Bdata
  223.     beq    @f
  224.     ori.b    #$2,d0
  225.     bra    Trg_LE
  226. @@:    ori.b    #$1,d0
  227. Trg_LE:
  228.     or.b    d0,(a1)
  229.     or.b    d0,Data2    * TEMCALLワーク
  230.     bra    EE
  231.  
  232. no_con:
  233.     clr.l    Data2    *TEMCALL work
  234.     clr.w    Bdata    *トリガー
  235.     move.w    #-1,Conect_
  236. EE:
  237.     movem.l    (sp)+,d0-d3/a0-a3
  238.  
  239. MSD_JMP_L:
  240.         ****************************キーボード処理
  241.     movem.l    d0-d1,-(sp)
  242.     btst.b    #1,KeyMod(pc)
  243.     beq    MJKL1
  244.     *moveq    #$0A,d1    *処理軽減のため..
  245.     *IOCS    _BITSNS
  246.      move.b    $800+$A,d0    *[XF1],[XF2]は押されている?
  247.     btst    #5,d0
  248.     beq    @f
  249.     clr.b    2(a1)
  250. @@:    btst    #6,d0
  251.     beq    @f
  252.     clr.b    1(a1)
  253. @@:
  254. MJKL1:
  255.     btst.b    #0,KeyMod(pc)
  256.     beq    MJKL2
  257.     *moveq    #$E,d1
  258.     *IOCS    _BITSNS
  259.      move.b    $800+$E,d0
  260.     tst.b    d0
  261.     beq    MJKL2
  262.     cmp.b    SftKey(pc),d0    *シフトとなるキーは押されているか?
  263.     bne    MJKL2
  264.     *moveq    #$A,d1
  265.     *IOCS    _BITSNS
  266.      move.b    $800+$A,d0
  267.     btst    #7,d0
  268.     beq    @f
  269.     clr.w    DrvMode        *相対モード
  270.     clr.w    MoEmuMode
  271.     bsr    RSINIT
  272.     bra    MJKL2
  273. @@:
  274.     *moveq    #$B,d1
  275.     *IOCS    _BITSNS
  276.      move.b    $800+$B,d0
  277.     btst    #0,d0
  278.     beq    @f
  279.     move.w    #$FF,DrvMode    *絶対モード
  280.     clr.w    MoEmuMode
  281.     bsr    RSINIT
  282.     bra    MJKL2
  283. @@:
  284.     btst    #1,d0
  285.     beq    @f
  286.     clr.w    DrvMode        *エミュ無し
  287.     move.w    #$00FF,MoEmuMode
  288.     bsr    RSINIT
  289.     *bra    MJKL2
  290. @@:
  291.  
  292. MJKL2:
  293.     movem.l    (sp)+,d0-d1
  294. MSD_JMP:
  295.     jmp    $00000000.l    *本来のルーチンへ
  296.  
  297. ChkTablet:*--------------------------------
  298.     * 心臓部
  299.     *    テーブル設定
  300.     *        タブレットがないと出来ない
  301.     *    破壊  d0-d3/a0-a3
  302.     *[戻り値]  beq コネクト(データを送ってきている) = テーブル作成(そのまま)
  303.     *       bne 非コネクト(ペン浮いている)
  304.  
  305.     bsr    LOF232C__
  306.     cmpi.w    #7,d0
  307.     bcs    CT_con        **** 7個未満なので今回は終わり
  308. @@:
  309.         **** DaKlset以上はおおすぎなので多少消す!?
  310.     cmpi.w    #7*DaKl+1,d0
  311.     bcs    CTno_L0
  312.     moveq    #7*(DaKl-1)-1,d1
  313. @@:
  314.     bsr    INP232C__
  315.     dbra    d1,@b
  316.     bsr    LOF232C__    *もう一度数チェック
  317.     bra    CTno_L1
  318.  
  319. CTno_L0:
  320.         **** DaKl2set以上はおおすぎなので多少消す!? part2
  321.     cmpi.w    #7*DaKl2+1,d0
  322.     bcs    CTno_L1
  323.     moveq    #7*(DaKl2-1)-1,d1
  324. @@:
  325.     bsr    INP232C__
  326.     dbra    d1,@b
  327.     bsr    LOF232C__    *もう一度数チェック
  328.  
  329. CTno_L1:
  330.     move.w    d0,d1
  331.     subq.w    #1,d1    * -1 して dbra対策
  332. CTno_L2:
  333.     bsr    ISNS232C__
  334.     move.w    d0,d2
  335.     beq    CTno_con
  336.     andi.w    #$00B7,d2
  337.     cmpi.w    #$00A0,d2    *tab dataのヘッダ?
  338.     beq    @f
  339.     bsr    INP232C__    *skipの代わり
  340.     dbra    d1,CTno_L2
  341.         ** TABLETのじゃなさそう
  342.     bra    CTno_con    *繋がっていない(RSは違う物?!)
  343. @@:
  344.     bsr    LOF232C__    *もう一度数チェック
  345.     cmp.w    #7,d0
  346.     bcs    CT_con    **** 残りが7個未満なので今回は終わり
  347. @@:
  348.     lea    buf(pc),a0
  349.         *** 7こ読み込む
  350.     bsr    INP232C__
  351.     move.b    d0,(a0)+
  352.     moveq    #6-1,d1
  353. @@:
  354.     bsr    INP232C__
  355.     btst    #7,d0
  356.     bne    CTno_con2    *データがおかしい(ずれている?!)
  357.     move.b    d0,(a0)+
  358.     dbra    d1,@b
  359.     *--データコンバード--*
  360.     lea    buf(pc),a0
  361.     btst.b    #6,(a0)
  362.     beq    CTno_con2    *ペンがタブレット上にない
  363.     move.w    #-1,PaChk
  364.     btst.b    #4,3(a0)
  365.     sne.b    d0
  366.     andi.b    #$80,d0
  367.     move.b    d0,Bdata
  368.  
  369.     move.b    6(a0),d0
  370.     eori.b    #$40,d0
  371.     move.b    d0,Pdata    *プレス
  372.     cmp.b    PressP(pc),d0
  373.     bcs    @f
  374.     ori.b    #$40,Bdata    *トリガー
  375. @@:
  376.     moveq    #0,d0
  377.     move.b    1(a0),d0
  378.     lsl.w    #7,d0
  379.     or.b    2(a0),d0
  380.     move.w    d0,Xdata
  381.  
  382.     moveq    #0,d0
  383.     move.b    4(a0),d0
  384.     lsl.w    #7,d0
  385.     or.b    5(a0),d0
  386.     move.w    d0,Ydata
  387.     move.w    #0,Conect    *コネクト
  388.     rts
  389.  
  390. CT_con:
  391.     tst.w    PaChk
  392.     beq    @f
  393.     move.w    #0,Conect    *コネクト
  394.     rts
  395. @@:
  396.     move.w    #-1,Conect
  397.     rts
  398.  
  399.  
  400. CTno_con:
  401.  
  402. CTno_con2:
  403.     clr.w    PaChk
  404.     clr.w    Bdata    *トリガー
  405.     EI
  406.     move.w    #-1,Conect        *非コネクト
  407.     rts
  408.  
  409. PaChk:    .dc.w    0        *-1:付いている 0:離れている
  410.  
  411.  
  412.  
  413.  
  414.  
  415. SizeTable:*--------------------------------
  416.     *    画面絶対座標計算(Xdata2 Ydata2 設定)
  417.     *
  418.     *    Xdata Ydata 設定してから呼ぶ
  419.     *[戻り値] a3=minX minY maxX maxY
  420.     *
  421.     *破壊    d0-d3 a3
  422.  
  423. WkMx    = 157
  424. WkMy    = 315
  425.             *このタブレットは5040*3780の精度があるので
  426.             *    5040:3780 = 4:3
  427.             *68のディスプレイは768*512
  428.             *    768*512 =  3:2
  429.             *なのでX,Yそれぞれ157,315余白を付け
  430.             *        4725:3150=3:2 とする
  431.             *また、余白がないと端の座標の指定が困難
  432.  
  433.     move.l    #5040-WkMx-WkMx,d3    *X補佐値
  434.     move.w    ZetMod(pc),d2    *絶対座標移動範囲モード
  435.     bne    @f
  436.         **絶対座標範囲=0
  437.     lea    $0A9A.w,a3
  438.     bra    zzST
  439. @@:    subq    #1,d2
  440.     bne    zzLL1
  441.         **絶対座標範囲=1
  442.  
  443.     moveq    #-1,d1
  444.     IOCS    _CRTMOD
  445.     btst    #4,d0
  446.     beq    @f
  447.     lea    S768(pc),a3
  448.     bra    zzST
  449. @@:
  450.     btst    #1,d0
  451.     beq    @f
  452.     lea    S256(pc),a3
  453.     bra    zzST
  454. @@:
  455.         **絶対座標範囲=2
  456. zzLL1:    lea    S512(pc),a3
  457.  
  458. zzST:
  459.     move.w    (a3),d0        *Xmin = 0 か?
  460.     bne    @f
  461.     move.w    2(a3),d0    *Ymin = 0 か?
  462.     bne    @f
  463.     move.w    4(a3),d0    *Xmax = Y=max か?
  464.     cmp.w    6(a3),d0
  465.     bne    @f
  466.     btst.b    #1,$00E80029
  467.     beq    @f
  468.             *CRTC R20 は 768になっている!!
  469.     move.l    #(3780-WkMy-WkMy),d3    *X補佐値2
  470.  
  471. @@:
  472.         **X計算
  473.     move.w    4(a3),d0    *X max
  474.     sub.w    (a3),d0        *X min        *d0=幅
  475.     move.w    Xdata(pc),d1
  476.     sub.w    #WkMx,d1
  477.     bcc    @f
  478.     moveq    #0,d1
  479.     bra    L_zx
  480. @@:    cmp.w    d3,d1
  481.     bcs    L_zx
  482.     move.w    d3,d1
  483. L_zx:
  484.     mulu.w    d0,d1
  485.     divu.w    d3,d1
  486.     add.w    (a3),d1            *目標X座標
  487.     move.w    d1,Xdata2
  488.  
  489.         **Y計算
  490.     move.w    6(a3),d0
  491.     sub.w    2(a3),d0    *d0=幅
  492.     move.w    Ydata(pc),d1
  493.     sub.w    #WkMy,d1
  494.     bcc    @f
  495.     moveq    #0,d1
  496.     bra    L_zy
  497. @@:    cmpi.w    #3780-WkMy-WkMy,d1
  498.     bcs    L_zy
  499.     move.w    #3780-WkMy-WkMy,d1
  500. L_zy:
  501.     mulu.w    d0,d1
  502.     divu.w    #3780-WkMy-WkMy,d1
  503.     add.w    2(a3),d1        *目標Y座標
  504.     move.w    d1,Ydata2
  505.     rts
  506.  
  507.  
  508. JOYGET:*---------------------------
  509.     *    ($13B)[$04EC]
  510.     *    IOCS $3B JOYGET
  511.     *
  512.  
  513. JOYGET_ = $04EC.w
  514.  
  515.     tst.w    d1
  516.     beq    JOYGET_JMP    * (0)なら
  517.     cmpi.w    #1,d1
  518.     beq    JOYGET_JMP    * (1)なら
  519.  
  520. JOYGET_COM:
  521.     *--ドライバー制御    *$8000番台は ArtPad専用!! 非公開!! 使用禁止!!
  522.     move.l    d1,d0
  523.     andi.l    #$F000,d0
  524.     cmpi.l    #$8000,d0
  525.     bne    JC_L1
  526.         *$8000番台
  527.     move.l    d1,d0
  528.     cmpi.w    #$8000,d0
  529.     beq    JOYGET_8000
  530.     cmpi.w    #$8001,d0
  531.     beq    JOYGET_8001
  532.     cmpi.w    #$8002,d0
  533.     beq    JOYGET_8002
  534.     cmpi.w    #$8003,d0
  535.     beq    JOYGET_8003
  536.     cmpi.w    #$8004,d0
  537.     beq    JOYGET_8004
  538.     cmpi.w    #$8005,d0
  539.     beq    JOYGET_8005
  540.     cmpi.w    #$8010,d0
  541.     beq    JOYGET_8010
  542.     cmpi.w    #$8011,d0
  543.     beq    JOYGET_8011
  544.     cmpi.w    #$8012,d0
  545.     beq    JOYGET_8012
  546.     *-- アクセサリモード関係
  547.     andi.w    #$FFF0,d0
  548.     cmpi.w    #$8080,d0
  549.     beq    JOYGET_8080    *ボタンモード変更
  550.     cmpi.w    #$8090,d0
  551.     beq    JOYGET_8090    *JOYSTICKモード変更
  552.     cmpi.w    #$80A0,d0
  553.     beq    JOYGET_80A0    *キー割り込みモードレベル
  554.     *-- マウスエミュレートモード
  555.     andi.w    #$FF00,d0
  556.     cmpi.w    #$8100,d0
  557.     beq    JOYGET_8100    *相対
  558.     cmpi.w    #$8200,d0
  559.     beq    JOYGET_8200    *絶対
  560.     cmpi.w    #$8300,d0
  561.     beq    JOYGET_8300    *中止
  562.     *-- マウスエミュレートモード
  563.     cmpi.w    #$8400,d0
  564.     beq    JOYGET_8400    *ボタン
  565. JC_L1:
  566.     move.l    d1,d0
  567.     andi.l    #$00F0,d0
  568.     cmpi.w    #$0080,d0
  569.     beq    @f
  570.     cmpi.w    #$0070,d0
  571.     bne    JG_LL
  572. @@:    *-------------- ドライバー  TBDRV系コール --------------*/
  573.     move.w    d1,d0
  574.     cmpi.b    #$80,d0
  575.     beq    JOYGET_80
  576.     cmpi.b    #$81,d0
  577.     beq    JOYGET_81
  578.     cmpi.b    #$82,d0
  579.     beq    JOYGET_82
  580.     cmpi.b    #$83,d0
  581.     beq    JOYGET_83
  582.     cmpi.b    #$8D,d0
  583.     beq    JOYGET_8D
  584.     cmpi.b    #$8E,d0
  585.     beq    JOYGET_8E
  586.     cmpi.b    #$8F,d0
  587.     beq    JOYGET_8F
  588.     cmpi.b    #$70,d0
  589.     tst.w    MoEmuMode    **マウスエミュ禁止
  590.     bne    @f
  591.     beq    JOYGET_70
  592.     cmpi.b    #$71,d0
  593.     beq    JOYGET_71
  594.     cmpi.b    #$72,d0
  595.     beq    JOYGET_72
  596.     cmpi.b    #$7D,d0
  597.     beq    JOYGET_7D
  598.     cmpi.b    #$7F,d0
  599.     beq    JOYGET_7F
  600. @@:
  601. JG_LL:
  602.     moveq    #_JOYGET,d0
  603. JOYGET_JMP:
  604.     jmp    $00000000.l
  605.  
  606.  
  607. JOYGET_8000:
  608.     *--JOYGET($8000)  ドライバー常駐チェック
  609.     *
  610.     *[戻り値]  d0.l = 常駐時; U*$1000000+D*$100000+E*$10000+$5442("TB") 接続
  611.     *            コールバージョン ver U.DE
  612.     *
  613.     move.l    #$00925442,d0
  614.     rts
  615.  
  616.  
  617. JOYGET_8001:
  618.     *--JOYGET($8001)  タブレット接続チェック
  619.     *
  620.     *[戻り値] $305442("0TB") タブレット接続
  621.     *      $315442("1TB") ペン接触
  622.     *
  623.     bsr    MEM
  624.     move.l    #$000000FF,d0
  625.     move.l    #$00305442,d0
  626.     tst.w    Conect
  627.     bmi    @f
  628.     move.l    #$00315442,d0
  629. @@:    rts
  630.  
  631.  
  632. JOYGET_8002:
  633.     *--JOYGET($8002)  座標値
  634.     *
  635.     *[戻り値] X*0x10000+Y (X;0-5040,Y;0-3780)
  636.     *
  637.     bsr    MEM
  638.     move.l    Xdata(pc),d0
  639.     rts
  640.  
  641. JOYGET_8003:
  642.     *--JOYGET($8003)  座標値2
  643.     *
  644.     *[戻り値] X*0x10000+Y (X;0-mx,Y;0-my)
  645.     *
  646.     *bsr    MEM
  647.     tst.w    MoEmuMode    *MouseEmu $FF:しない
  648.     beq    @f
  649.     movem.l    d2-d3/a0-a3,-(sp)
  650.     bsr    ChkTablet
  651.     bsr    SizeTable
  652.     movem.l    (sp)+,d2-d3/a0-a3
  653. @@:
  654.     move.w    DrvMode(pc),d0
  655.     bne    @f
  656.      movem.l d0-d3/a3,-(sp)
  657.      bsr     SizeTable
  658.      movem.l (sp)+,d0-d3/a3
  659. @@:    move.l    Xdata2(pc),d0
  660.     rts
  661.  
  662.  
  663. JOYGET_8004:
  664.     *--JOYGET($8004)  トリガー
  665.     *
  666.     *[戻り値] bit15:click(pen) bit14:プレス bit6-0:筆圧(生)
  667.     *
  668.     bsr    MEM
  669.     moveq    #0,d0
  670.     move.w    Conect(pc),d1
  671.     bmi    @f
  672.     move.w    Bdata(pc),d0
  673. @@:    rts
  674.  
  675.  
  676. JOYGET_8005:
  677.     *--JOYGET($8005)  トリガー2
  678.     *
  679.     *[戻り値] bit15:click(pen) bit14:プレス bit6-0:筆圧(変換後)
  680.     *                    0-127
  681.     *
  682.     bsr    MEM
  683.     move.w    Conect(pc),d1
  684.     bpl    @f
  685.     moveq    #0,d0
  686.     rts
  687. @@:
  688.     move.w    Bdata(pc),d0
  689.     andi.l    #$007F,d0
  690.     sub.b    PressP(pc),d0
  691.     bcc    @f
  692.     move.w    Bdata(pc),d0
  693.     andi.l    #$0000C000,d0
  694.     rts
  695. @@:
  696.     move.w    #127,d1
  697.     sub.b    PressP(pc),d1    *126-64
  698.     mulu    #127,d0
  699.     divu    d1,d0
  700.     andi.l    #$000FFFF,d0
  701.     move.w    Bdata(pc),d1
  702.     andi.w    #$C000,d1
  703.     or.w    d1,d0
  704.     rts
  705.  
  706.  
  707. JOYGET_8006:
  708.     *--JOYGET($8006)  トリガー3
  709.     *
  710.     *[戻り値] 0 Town's TABLETではサポート出来ず
  711.     *
  712.     moveq    #0,d0
  713.     rts
  714.  
  715.  
  716. JOYGET_8010:
  717.     *--JOYGET($8010)  ステイタス1
  718.     *
  719.     *[戻り値] 127*0x10000+2 です。
  720.     *
  721.     move.l    #127*0x10000+10,d0
  722.     rts
  723.  
  724.  
  725. JOYGET_8011:
  726.     *--JOYGET($8011)  ステイタス2
  727.     *
  728.     *[戻り値] 5040*0x10000+3780 です。
  729.     *
  730.     move.l    #5040*0x10000+3780,d0
  731.     rts
  732.  
  733.  
  734. JOYGET_8012:
  735.     *--JOYGET($8012)  ステイタス3
  736.     *
  737.     *[戻り値] 0 Town's TABLETではサポート出来ず
  738.     *
  739.     moveq    #0,d0
  740.     rts
  741.  
  742.  
  743. JOYGET_8080:
  744.     *--JOYGET($808?)  ボタンモード
  745.     *
  746.     *[引数] 0:ノーマル 1:リバース 2;98P    $F:モードチェック
  747.     *[戻り値] 前のモード
  748.     *
  749.     move.l    #$8080,d0
  750.     add.w    BotMod(pc),d0
  751.     andi.w    #$0F,d1
  752.     cmpi.w    #3,d1
  753.     bcc    @f
  754.     move.w    d1,BotMod
  755. @@:    rts
  756.  
  757.  
  758.  
  759. JOYGET_8090:
  760.     *--JOYGET($809?)  JOYGETモード切り替え(エミュレートしない)
  761.     *
  762.     *[引数] 0:しない 1:する        F:モードチェック
  763.     *[戻り値] 前のモード
  764.     *            *ArtPadは機能しない
  765.     move.l    #$8090,d0
  766.     rts
  767.  
  768.  
  769.  
  770. JOYGET_80A0:
  771.     *--JOYGET($80A?)  キー割り込み処置レベル
  772.     *
  773.     *[引数]         F:モードチェック
  774.     *[戻り値] 前のモード
  775.     *
  776.     move.b    KeyMod(pc),-(sp)
  777.     move.b    d1,d0
  778.     andi.w    #$000F,d0
  779.     cmpi.b    #$0F,d0
  780.     beq    @f
  781.     cmpi.w    #$0004,d0
  782.     bcc    @f
  783.     move.b    d0,KeyMod    *0:なし 1:モードのみ 2:XY制限のみ 3:両方
  784. @@:    moveq    #0,d0
  785.     move.b    (sp)+,d0
  786.     ori.l    #$80A0,d0
  787.     rts
  788.  
  789.  
  790.  
  791. JOYGET_8100:
  792.     *--JOYGET($81??)  相対モードへ
  793.     *            ?? == 0xFF ならモードチェック
  794.     *[戻り値] 前のモード
  795.     *
  796.     bsr    J8_d0_chk    *d0に戻り値
  797.     cmpi.b    #$FF,d1
  798.     beq    @f
  799.     clr.w    DrvMode
  800.     clr.w    MoEmuMode
  801.     andi.w    #$0003,d1
  802.     move.w    d1,SLW
  803.     bsr    RSINIT
  804. @@:    rts
  805.  
  806.  
  807. JOYGET_8200:
  808.     *--JOYGET($82??)  絶対モードへ
  809.     *            ?? == 0xFF ならモードチェック
  810.     *[戻り値] 前のモード
  811.     *
  812.     move.l    d1,d0
  813.     andi.w    #$00F0,d0
  814.     cmpi.w    #$0080,d0
  815.     beq    JOYGET_8280    *
  816.  
  817.     bsr    J8_d0_chk    *d0に戻り値
  818.     cmpi.b    #$FF,d1
  819.     beq    @f
  820.     move.w    #$FF,DrvMode
  821.     clr.w    MoEmuMode
  822.     andi.w    #$007F,d1
  823.     move.w    d1,IM
  824.     bsr    RSINIT
  825. @@:    rts
  826.  
  827.  
  828. JOYGET_8300:
  829.     *--JOYGET($83??)  エミュレート禁止
  830.     *            ?? == 0xFF ならモードチェック
  831.     *[戻り値] 前のモード
  832.     *
  833.     bsr    J8_d0_chk    *d0に戻り値
  834.     cmpi.b    #$FF,d1
  835.     beq    @f
  836.  
  837.     clr.w    DrvMode
  838.     move.w    #$00FF,MoEmuMode    **禁止
  839.     clr.w    Bdata            *トリガー
  840.     move.w    #-1,Conect        *非コネクト
  841.     bsr    RSINIT
  842. @@:    rts
  843.  
  844.  
  845. J8_d0_chk:*
  846.     *    エミュの戻り値
  847.     *
  848.     move.w    MoEmuMode(pc),d0
  849.     beq    @f
  850.     move.l    #$8300,d0    *エミュなし
  851.     rts
  852. @@:
  853.     move.w    DrvMode(pc),d0
  854.     bne    @f
  855.     move.l    #$8100,d0    *相対
  856.     add.w    SLW(pc),d0
  857.     rts
  858. @@:
  859.     move.l    #$8200,d0
  860.     add.w    IM(pc),d0
  861.     rts
  862.  
  863.  
  864. JOYGET_8280:
  865.     *--JOYGET($828?)  絶対座標移動範囲モード
  866.     *
  867.     *[引数] 0-3    0: MS_LIMITの範囲による移動範囲を判別。(def.)
  868.     *        1: CRTMODによる移動範囲を判別。
  869.     *        2: 512x512画面専用
  870.     *[戻り値] 前のモード
  871.     *
  872.     move.l    #$8280,d0
  873.     add.w    ZetMod(pc),d0
  874.  
  875.     andi.w    #$0F,d1
  876.     cmpi.w    #3,d1
  877.     bcc    @f
  878.     move.w    d1,ZetMod
  879. @@:    rts
  880.  
  881.  
  882.  
  883. JOYGET_8400:
  884.     *--JOYGET($84??)  ボタンプレスクリック値
  885.     *[引数]  16-100
  886.     *            ?? == 0xFF ならモードチェック
  887.     *[戻り値] 前の数値
  888.     *
  889.     moveq    #0,d0
  890.     move.b    PressP(pc),d0
  891.     andi.b    #$00FF,d1
  892.     bne    @f
  893.     moveq    #$40,d1    *0だったら$40
  894. @@:    cmpi.b    #101,d1
  895.     bcc    @f
  896.     cmpi.b    #16,d1
  897.     bcs    @f
  898.     move.b    d1,PressP
  899. @@:    rts
  900.  
  901.  
  902.  
  903.     *******************
  904.     *    TBDRV互換
  905. JOYGET_80:*********************
  906.     *  _TB_CHECK  [$80]    ドライバーの常駐チェック
  907.     *        [ In ] なし [ Out ] d0.l ='TDMK'
  908.     *                    d1.w =Ver[整数]*256+Ver[小数]
  909.     move.l    #'TDMK',d0
  910.     move.l    #$0100,d1
  911.     rts
  912.  
  913. JOYGET_81:*********************
  914.     *  _TB_INIT   [$81]    タブレットイニシャライズ [Tablet Mode On]
  915.     *        [ In ] なし [ Out ] d0.l =0
  916. JOYGET_8E:*********************
  917.     *  _TB_RESEV  [$8e]    ドライバーの占有設定/解除
  918.     *        [ In ] d2.w=占有モード[0=解除/-1=設定] [ Out ] d0.l =0
  919.     *                ☆ArtPadでは何もしません。
  920. JOYGET_8F:*********************
  921.     *  _TB_EXIT   [$8f]    ドライバーの終了 [Tablet Mode Off]
  922.     *        [ In ] なし [ Out ] d0.l =0
  923.     *                ☆ArtPadでは何もしません。
  924.     moveq    #0,d0
  925.     rts
  926.  
  927. JOYGET_82:*********************
  928.     *  _TB_POSGT  [$82]    タブレットステイタス読み込み [Tablet Mode]
  929.     *        [ In ] なし [ Out ] d0.w =SideSw.[0/255]*256+筆圧[0-127]
  930.     *                    d1.l =XPos[0-5040]*65536+YPos[0-3780]
  931.     bsr    MEM
  932.     tst.w    Conect
  933.     bpl    @f
  934.     moveq    #0,d0    *非接続
  935.     move.l    Xdata(pc),d1
  936.     rts
  937. @@:    move.w    Bdata(pc),d0
  938.     bmi    @f
  939.     andi.w    #$00FF,d0
  940.     move.l    Xdata(pc),d1
  941.     rts
  942. @@:    ori.w    #$FF00,d0
  943.     move.l    Xdata(pc),d1
  944.     rts
  945.  
  946. JOYGET_83:*********************
  947.     *  _TB_CONECT [$83]    タブレット接続チェック
  948.     *        [ In ] なし [ Out ] d0.l =0[接続してます]
  949.     bsr    MEM
  950.     moveq    #-1,d0
  951.     tst.w    Conect
  952.     bmi    @f
  953.     moveq    #0,d0
  954. @@:    rts
  955.  
  956. JOYGET_8D:*********************
  957.     *  _TB_STATUS [$8d]    タブレットステイタス
  958.     *        [ I n ] なし [ Out ] d0.l ='TDMK'
  959.     *                     d1.l =タブレットID*65536+タブレットドライバーVer
  960.     *                     d2.l =タブレット最大座標[XSize*65536+YSize]
  961.     *                     d6.l =ドライバー占有フラグ
  962.     *                     d7.l =デバイスID['ATPD']
  963.     move.l    #'TDMK',d0
  964.     move.l    #$00010100,d1
  965.     move.l    #5040*65536+3780,d2
  966.     move.l    #$00000078,d3
  967.     clr.l    d4
  968.     clr.l    d5
  969.     moveq    #$1c,d6
  970.     move.l    #'ATPD',d7
  971.     rts
  972.  
  973. JOYGET_93:*********************
  974.     *  _TB_POSGT  [$82]    タブレットステイタス読み込み(絶対座標) [Tablet Mode]
  975.     *        [ In ] なし [ Out ] d0.w =SideSw.[0/255]*256+筆圧[0-126]
  976.     *                    d1.l =XPos[0-511/767]*65536+YPos[0-511]
  977.     bsr    MEM
  978.     tst.w    Conect
  979.     bpl    @f
  980.     moveq    #0,d0    *非接続
  981.     move.l    Xdata2(pc),d1
  982.     rts
  983. @@:    move.w    Bdata(pc),d0
  984.     bmi    @f
  985.     andi.w    #$00FF,d0
  986.     move.l    Xdata2(pc),d1
  987.     rts
  988. @@:    ori.w    #$FF00,d0
  989.     move.l    Xdata2(pc),d1
  990.     rts
  991.  
  992. JOYGET_70:*********************
  993.     *  _ME_CHECK  [$70]    エミュレーター常駐チェック
  994.     *        [ I n ] なし [ Out ] d0.l ='MEMK'
  995.     *                     d1.w =Ver[整数]*256+Ver[小数]
  996.     *                ArtPadでは Ver 1.00として扱われます。
  997.     move.l    #'MEMK',d0
  998.     move.w    #$0100,d1
  999.     rts
  1000.  
  1001. JOYGET_71:*********************
  1002.     *  _ME_INIT   [$71]    エミュレーターイニシャライズ [Emulation Mode On]
  1003.     *        [ I n ] なし [ Out ] d0.l =0
  1004.     *                    ☆ArtPadでは相対座標モードになります。
  1005.     bsr    JOYGET_8100
  1006.     moveq    #0,d0
  1007.     rts
  1008.  
  1009. JOYGET_72:*********************
  1010.     *  _ME_MODE   [$72]    エミュレートモード選択
  1011.     *        [ I n ] d2.w=エミュレーションモード[0=相対/1=絶対]
  1012.     *                ☆=1 は ArtPadでは絶対モード1になります。
  1013.     *        [ Out ] d0.l =現在のエミュレーションモード
  1014.     move.w    DrvMode(pc),-(sp) *0:相対  $FF:絶対
  1015.     tst.w    d2
  1016.     bne    @f
  1017.         **相対
  1018.     bsr    JOYGET_8100
  1019.     bra    JG_72
  1020. @@:
  1021.         *絶対
  1022.     moveq    #0,d1
  1023.     bsr    JOYGET_8200
  1024. JG_72:    move.w    (sp)+,d0
  1025.     andi.l    #1,d0
  1026.     rts
  1027.  
  1028. JOYGET_7D:*********************
  1029.     *  _ME_STATUS [$7d]    エミュレーションステイタス
  1030.     *        [ I n ] なし [ Out ] d0.l ='MEMK'
  1031.     *                     d1.w =Ver[整数]*256+Ver[小数]
  1032.     *                     d2.l =使用エリアサイズ[XSize*65536+YSize]
  1033.     move.l    #'MEMK',d0
  1034.     move.w    #$0100,d1
  1035.     move.l    #768*65536+512,d2
  1036.     rts
  1037.  
  1038. JOYGET_7F:*********************
  1039.     *  _ME_EXIT   [$7f]    エミュレーション終了 [Emulation Mode Off]
  1040.     *        [ I n ] なし [ Out ] d0.l =0
  1041.     bsr    JOYGET_8300
  1042.     moveq    #0,d0
  1043.     rts
  1044.  
  1045. ********************SUBR
  1046. MEM:
  1047.     tst.w    MoEmuMode    *MouseEmu $FF:しない
  1048.     beq    @f
  1049.     movem.l    d0-d3/a0-a3,-(sp)
  1050.     bsr    ChkTablet
  1051.     movem.l    (sp)+,d0-d3/a0-a3
  1052. @@:    rts
  1053.  
  1054.  
  1055. SET232C:*---------------------------
  1056.     *    ($130)[$04C0]
  1057.     *    IOCS $30 SET232C
  1058.     *
  1059.  
  1060. SET232C_ = $04C0.w
  1061.  
  1062.     * 常駐解除されないようにフック
  1063.     * 本当は全てフックするべきなのだが、
  1064.     * RS という物を考えればこれでいいのでは?
  1065.     * が、TMSIOは上常駐チェックをしていないので注意!!
  1066. SET232C_JMP:
  1067.     jmp    $00000000.l
  1068.  
  1069.  
  1070. MS_INIT:*---------------------------
  1071.     *    ($170)[$05C0]
  1072.     *    IOCS $70 MS_INIT
  1073.  
  1074. MS_INIT_ = $05C0.w
  1075.  
  1076.     tst.w    MoEmuMode    *MouseEmu $FF:しない
  1077.     beq    MS_INIT_JMP
  1078.  
  1079.     bsr    RSINIT
  1080. MS_INIT_JMP:
  1081.     jmp    $00000000.l
  1082.  
  1083.  
  1084. MS_SEL:    *-----------------------------
  1085.     *    ($17B)[$05EC]
  1086.     *    IOCS $7B MS_SEL
  1087.     *
  1088.  
  1089. MS_SEL_ = $05EC.w
  1090.  
  1091.     tst.w    MoEmuMode    *MouseEmu $FF:しない
  1092.     bne    MS_SEL_JMP
  1093.  
  1094.     cmpi.w    #$104,d1        *RS-232C
  1095.     beq    @f
  1096. MS_SEL_JMP:
  1097.     jmp    0.l
  1098. @@:
  1099.     move.l    #'TEMC',d0
  1100.     rts
  1101.  
  1102. MS_LIMIT:*-----------------------------
  1103.     *    ($177)[$05DC]
  1104.     *    IOCS $77 MS_LIMIT
  1105.     *
  1106.  
  1107. MS_LIMIT_ = $05DC.w
  1108.  
  1109.     tst.w    MoEmuMode    *MouseEmu $FF:しない
  1110.     bne    MS_LIMIT_JMP
  1111.  
  1112.     cmpi.l    #'TEMC',d1
  1113.     beq    @f
  1114. MS_LIMIT_JMP:
  1115.     jmp    0.l
  1116. @@:
  1117.     cmpi.w    #4,d2        *RS-232C
  1118.     beq    @f
  1119.     bra    MS_LIMIT_JMP
  1120. @@:
  1121.     movem.l    d1/a0,-(sp)
  1122.     lea    Data2(pc),a0
  1123.     moveq    #0,d0
  1124.     btst    #0,(a0)
  1125.     beq    @f
  1126.     ori.l    #$FF000000,d0
  1127. @@:    btst    #1,(a0)
  1128.     beq    @f
  1129.     ori.l    #$00FF0000,d0
  1130. @@:    moveq    #0,d1
  1131.     move.b    1(a0),d1
  1132.     lsl.l    #8,d1
  1133.     or.w    d1,d0
  1134.     move.b    2(a0),d0
  1135.     move.b    #-1,3(a0)
  1136.     clr.b    1(a0)    *移動量はクリア
  1137.     clr.b    2(a0)
  1138.     movem.l    (sp)+,d1/a0
  1139.     rts
  1140.  
  1141. *----TEMCALL work----*
  1142.  
  1143. Data2:    .dc.l    0        *MS_LIMIT戻り値用
  1144.             *読んだら +3.bを-1に!
  1145.  
  1146.  
  1147. *********************RS SET**************
  1148. RSINIT:
  1149.     movem.l    d0-d1,-(sp)
  1150.     move.w    #$4c07,d1
  1151.     bsr    SET232C__
  1152. @@:
  1153.     bsr    ISNS232C__
  1154.     tst.w    d0
  1155.     beq    @f
  1156.     bsr    INP232C__    *skipの代わり
  1157.     bra    @b
  1158. @@:
  1159.     movem.l    (sp)+,d0-d1
  1160.     rts
  1161.  
  1162. *----IOCS Org.Calls--------*
  1163.  
  1164. SET232C__:
  1165.     movem.l    a0/a5,-(sp)
  1166.     suba.l    a5,a5
  1167.     moveq    #_SET232C,d0
  1168.     movea.l    _SET232C__(pc),a0
  1169.     jsr    (a0)    * SET232C
  1170.     movem.l    (sp)+,a0/a5
  1171.     rts
  1172. ISNS232C__:
  1173.     movem.l    a0/a5,-(sp)
  1174.     suba.l    a5,a5
  1175.     moveq    #_ISNS232C,d0
  1176.     movea.l    _ISNS232C__(pc),a0
  1177.     jsr    (a0)    * ISNS232C
  1178.     movem.l    (sp)+,a0/a5
  1179.     rts
  1180. INP232C__:
  1181.     movem.l    a0/a5,-(sp)
  1182.     suba.l    a5,a5
  1183.     moveq    #_INP232C,d0
  1184.     movea.l    _INP232C__(pc),a0
  1185.     jsr    (a0)    * INP232C
  1186.     movem.l    (sp)+,a0/a5
  1187.     rts
  1188. LOF232C__:
  1189.     movem.l    a0/a5,-(sp)
  1190.     suba.l    a5,a5
  1191.     moveq    #_LOF232C,d0
  1192.     movea.l    _LOF232C__(pc),a0
  1193.     jsr    (a0)    * LOF232C
  1194.     movem.l    (sp)+,a0/a5
  1195.     rts
  1196.  
  1197. *----IOCS Org.Addds TABLE--------*
  1198.  
  1199. _SET232C__:
  1200.     .dc.l    0
  1201. _ISNS232C__:
  1202.     .dc.l    0
  1203. _INP232C__:
  1204.     .dc.l    0
  1205. _LOF232C__:
  1206.     .dc.l    0
  1207.  
  1208. *----DATA TABLE--------*
  1209.  
  1210. Conect:
  1211.     .dc.w    $00        *0:コネクト -1:非コネクト
  1212. Conect_:
  1213.     .dc.w    $FF        *0:コネクト $FF:非コネクト MS_EMU用
  1214. Bdata:
  1215.     .dc.b    $00        *bit7: click(pen) bit6:プレス
  1216. Pdata:
  1217.     .dc.b    $00        *bit6-0:0-127
  1218. Xdata:
  1219.     .dc.w    $0000        *タブレット X座標    (0-5040)
  1220. Ydata:
  1221.     .dc.w    $0000        *タブレット Y座標    (0-960)
  1222. oldXdata:
  1223.     .dc.w    $0000        *旧タブレット X座標
  1224. oldYdata:
  1225.     .dc.w    $0000        *旧タブレット Y座標
  1226. Xdata2:
  1227.     .dc.w    $0000        * X絶対座標        (0-画面による)
  1228. Ydata2:
  1229.     .dc.w    $0000        * Y絶対座標        (0-画面による)
  1230. buf:
  1231.     .dc.b    0,0,0,0,0,0,0,0
  1232.     .even
  1233. JogCont:
  1234.     .dc.w    $0000        * 0:
  1235.  
  1236. *------WORK------*
  1237. *$0A9A =X min
  1238. *$0A9C =Y min
  1239. *$0A9E =X max
  1240. *$0AA0 =Y max
  1241. S256:
  1242.     .dc.w    0,0,255,255
  1243. S512:
  1244.     .dc.w    0,0,511,511
  1245. S768:
  1246.     .dc.w    0,0,767,511
  1247.  
  1248. MoEmuMode:
  1249.     .dc.w    $00        *0:する  $FF:しない
  1250. DrvMode:
  1251.     .dc.w    $00        *0:相対  $FF:絶対
  1252. IM:
  1253.     .dc.w    0        *絶対座標モード時、最大移動値
  1254. ZetMod:
  1255.     .dc.w    0        *絶対座標移動範囲モード 0-2
  1256. BotMod:
  1257.     .dc.w    $0000        *0:プレス=左クリック 1:プレス=右クリック
  1258. KeyMod:
  1259.     .dc.b    3        *0:なし 1:モードのみ 2:XY制限のみ 3:両方
  1260. SftKey:
  1261.     .dc.b    8        *シフトキー BITSNS(0xE)
  1262.     .even
  1263. PressP:
  1264.     .dc.b    $40        *クリックと認める数値
  1265.     .even
  1266. SLW:
  1267.     .dc.w    0        *相対モード時のタブレット向き 0:ノーマル
  1268. RSMOD:    .dc.l    0        *常駐前の RS状態
  1269.  
  1270.  
  1271.  
  1272. EndStatio:*******************常駐部
  1273.  
  1274.  
  1275. MarkerChk:*----------------------------------------
  1276.     *    a0 アドレス
  1277.     *
  1278.     *[戻り値] bne ちがう
  1279.     *      beq あっている
  1280.     cmpa.l    #$00F00000,a0
  1281.     bcc    @f
  1282.     cmp.l    #HEAD1,(a0)
  1283.     bne    @f
  1284.     cmp.l    #HEAD2,4(a0)
  1285.     bne    @f
  1286.     cmpa.l    a0,a0        *z=1
  1287. @@:
  1288.     rts
  1289.  
  1290.  
  1291. InvChk:*----------------------------------------
  1292.     *    a0.l==なら非常駐
  1293.     *    a0.l!=なら常駐
  1294.     movea.l    (a0),a0            *一つ前のポインタ
  1295.     cmpa.l    #$00F00000,a0
  1296.     bcc    IC1
  1297.     cmp.l    #HEAD1,$0104(a0)
  1298.     bne    @f
  1299.     cmp.l    #HEAD2,$0108(a0)
  1300.     bne    @f
  1301.     adda.w    #$100,a0    **[SS]のポインタ
  1302.     rts
  1303. @@:                    **違う
  1304.     tst.l    (a0)            *一つ前のポインタ
  1305.     bne    InvChk            *0でない(上へ)
  1306. IC1:    sub.l    a0,a0    *非常駐
  1307.     rts
  1308.  
  1309.  
  1310. AtoI:*----------------------------------------
  1311.     *    a2 アドレス
  1312.     *[戻り値] d0.l 数字
  1313.     moveq    #0,d0
  1314.     move.b    (a2),d2
  1315.     cmpi.b    #'$',d2
  1316.     beq    AtoHI
  1317. @@:    move.b    (a2)+,d2
  1318.     subi.b    #'0',d2
  1319.     bcs    AIr
  1320.     cmpi.b    #9,d2
  1321.     bhi    AIr
  1322.     andi.l    #$0000FF,d2
  1323.     mulu    #10,d0
  1324.     add.l    d2,d0
  1325.     bra    @b
  1326. AIr:    subq    #1,a2
  1327.     rts
  1328. AtoHI:
  1329.     *(Hex専用)
  1330.     moveq    #0,d0
  1331.     move.b    (a2)+,d2    *$ skip
  1332. @@:    move.b    (a2)+,d2
  1333.     subi.b    #'0',d2
  1334.     bcs    AHIL1
  1335.     cmpi.b    #9,d2
  1336.     bhi    AHIL1
  1337.     lsl.l    #4,d0
  1338.     add.l    d2,d0
  1339.     bra    @b
  1340. AHIL1:
  1341.     ori.b    #$20,d2
  1342.     subi.b    #'a'-'0',d2
  1343.     bcs    AHIL2
  1344.     cmpi.b    #5,d2
  1345.     bhi    AHIL2
  1346.     lsl.l    #4,d0
  1347.     addi.l    #10,d0
  1348.     add.l    d2,d0
  1349.     bra    @b
  1350. AHIL2:    subq    #1,a2
  1351.     rts
  1352.  
  1353.  
  1354. init:*------------------------------------------------------------------
  1355.     lea    usrsp,sp
  1356.     pea    LR1(pc)
  1357.     DOS    _PRINT
  1358.     addq.w    #4,sp
  1359.     ** 常駐チェック **
  1360.     suba.l    a1,a1
  1361.     SUPER
  1362.     movea.l    d0,a1
  1363.     moveq    #0,d1
  1364.     bsr    InvChk
  1365.     movea.l    a0,a3        *常駐先頭アドレス
  1366.  
  1367.     movea.l    MSD_,a0
  1368.     subq    #MSD-head,a0
  1369.     bsr    MarkerChk
  1370.     bne    @f
  1371.     bset    #0,d1
  1372. @@:
  1373.     movea.l    JOYGET_,a0
  1374.     suba    #JOYGET-head,a0
  1375.     bsr    MarkerChk
  1376.     bne    @f
  1377.     bset    #1,d1
  1378. @@:
  1379.     movea.l    SET232C_,a0
  1380.     suba    #SET232C-head,a0
  1381.     bsr    MarkerChk
  1382.     bne    @f
  1383.     bset    #2,d1
  1384. @@:
  1385.     movea.l    MS_INIT_,a0
  1386.     suba    #MS_INIT-head,a0
  1387.     bsr    MarkerChk
  1388.     bne    @f
  1389.     bset    #3,d1
  1390. @@:
  1391.     movea.l    MS_SEL_,a0
  1392.     suba    #MS_SEL-head,a0
  1393.     bsr    MarkerChk
  1394.     bne    @f
  1395.     bset    #4,d1
  1396. @@:
  1397.     movea.l    MS_LIMIT_,a0
  1398.     suba    #MS_LIMIT-head,a0
  1399.     bsr    MarkerChk
  1400.     bne    @f
  1401.     bset    #5,d1
  1402. @@:
  1403.                 *d1に常駐状態
  1404.     USER
  1405.  
  1406.     ** 常駐していたらそのデータを引用 **
  1407.     move.l    a3,d0
  1408.     beq    conl
  1409.     move.w    MoEmuMode-SS(a3),MoEmuMode
  1410.     move.w    DrvMode-SS(a3),DrvMode
  1411.     move.w    IM-SS(a3),IM
  1412.     move.w    ZetMod-SS(a3),ZetMod
  1413.     move.w    BotMod-SS(a3),BotMod
  1414.     move.b    KeyMod-SS(a3),KeyMod
  1415.     move.b    SftKey-SS(a3),SftKey
  1416.     move.b    PressP-SS(a3),PressP
  1417.     move.w    SLW-SS(a3),SLW
  1418.  
  1419. conl:    ** コマンドラインチェック **
  1420.     tst.b    (a2)+        *スキップ
  1421. sw:    move.b    (a2)+,d0
  1422.     beq    keep
  1423.     cmpi.b    #' ',d0
  1424.     beq    sw
  1425.     cmpi.b    #$09,d0        *tab
  1426.     beq    sw
  1427.     cmpi.b    #'-',d0
  1428.     beq    swc
  1429.     cmpi.b    #'/',d0
  1430.     beq    swc
  1431. swe:    pea    LR6(pc)
  1432.     bra    PE    *end
  1433. swc:    **スイッチ判断
  1434.     move.b    (a2)+,d0
  1435.     beq    swe
  1436.     cmpi.b    #'?',d0
  1437.     beq    help
  1438.     ori.b    #$20,d0    *小文字化!
  1439.     cmpi.b    #'r',d0
  1440.     beq    free
  1441.     cmpi.b    #'p',d0
  1442.     beq    pswc
  1443.     cmpi.b    #'d',d0
  1444.     beq    dswc
  1445.     cmpi.b    #'b',d0
  1446.     beq    bswc
  1447.     cmpi.b    #'n',d0
  1448.     beq    nswc
  1449.     cmpi.b    #'k',d0
  1450.     beq    kswc
  1451.     cmpi.b    #'s',d0
  1452.     beq    sswc
  1453.     cmpi.b    #'j',d0
  1454.     beq    jswc
  1455.     cmpi.b    #'i',d0
  1456.     beq    iswc
  1457.     cmpi.b    #'h',d0
  1458.     beq    help
  1459. swcerr:    pea    LR7(pc)
  1460.     bra    PE    *end
  1461.  
  1462. iswc:***************
  1463.     move.w    #-1,SwcI
  1464.     bra    sw
  1465. pswc:***************
  1466.     bsr    AtoI
  1467.     cmpi.l    #$0080,d0
  1468.     bcc    swcerr
  1469.     move.w    #$FF,DrvMode
  1470.     clr.w    MoEmuMode
  1471.     move.w    d0,IM        *絶対座標モード時、最大移動値
  1472.     bra    sw
  1473. dswc:****************
  1474.     bsr    AtoI
  1475.     cmpi.l    #$0004,d0
  1476.     bcc    swcerr
  1477.     move.w    d0,SLW
  1478.     clr.w    DrvMode
  1479.     clr.w    MoEmuMode
  1480.     bra    sw
  1481. nswc:****************
  1482.     move.w    #$00FF,MoEmuMode
  1483.     clr.w    Bdata            *トリガー
  1484.     move.w    #-1,Conect        *非コネクト
  1485.     suba.l    a1,a1
  1486.     SUPER
  1487.     movea.l    d0,a1
  1488.     USER
  1489.     bra    sw
  1490. bswc:******************
  1491.     cmpi.b    #'p',(a2)
  1492.     beq    bswcL1
  1493.     cmpi.b    #'P',(a2)
  1494.     beq    bswcL1
  1495.     bsr    AtoI
  1496.     cmpi.l    #$0003,d0
  1497.     bcc    swcerr
  1498.     move.w    d0,BotMod        *0:プレス=左クリック 1:プレス=右クリック 2:PC9801P
  1499.     bra    sw
  1500. bswcL1:
  1501.     addq    #1,a2
  1502.     bsr    AtoI
  1503.     tst.b    d0
  1504.     bne    @f
  1505.     moveq    #$40,d0
  1506. @@:    cmpi.b    #101,d0
  1507.     bcc    swcerr
  1508.     cmpi.b    #16,d0
  1509.     bcs    swcerr
  1510.     move.b    d0,PressP
  1511.     bra    sw
  1512.  
  1513. sswc:*******************
  1514.     bsr    AtoI
  1515.     cmpi.l    #$0003,d0
  1516.     bcc    swcerr
  1517.     move.w    d0,ZetMod
  1518.     bra    sw
  1519. jswc:*******************
  1520.     bra    sw    *何も無し
  1521. kswc:*******************
  1522.     cmpi.b    #'s',(a2)
  1523.     beq    kswcL1
  1524.     cmpi.b    #'S',(a2)
  1525.     beq    kswcL1
  1526.     bsr    AtoI
  1527.     cmpi.l    #$0004,d0
  1528.     bcc    swcerr
  1529.     move.b    d0,KeyMod
  1530.     bra    sw
  1531. kswcL1:
  1532.     bsr    AtoHI
  1533.     cmpi.b    #$0010,d0
  1534.     bcc    swcerr
  1535.     tst.b    d0
  1536.     bne    @f
  1537.     moveq    #8,d0
  1538. @@:    move.b    d0,SftKey
  1539.     bra    sw
  1540.  
  1541. help:******************
  1542.     pea    LRH(pc)
  1543.     bra    PE    *end
  1544.  
  1545.  
  1546. keep:    ************************** 常駐させる
  1547.     move.l    a3,d0
  1548.     beq    @f
  1549.         *既に常駐、設定変更
  1550.  
  1551.     move.w    MoEmuMode(pc),MoEmuMode-SS(a3)
  1552.     move.w    DrvMode(pc),DrvMode-SS(a3)
  1553.     move.w    IM(pc),IM-SS(a3)
  1554.     move.w    ZetMod(pc),ZetMod-SS(a3)
  1555.     move.w    BotMod(pc),BotMod-SS(a3)
  1556.     move.b    KeyMod(pc),KeyMod-SS(a3)
  1557.     move.b    SftKey(pc),SftKey-SS(a3)
  1558.     move.b    PressP(pc),PressP-SS(a3)
  1559.     move.w    SLW(pc),SLW-SS(a3)
  1560.     bsr    keepsub
  1561.     pea    LR5(pc)
  1562.     bra    PE    *end
  1563. @@:
  1564.         *TBDRVが入っていないか?
  1565.     tst.w    SwcI
  1566.     bne    @f
  1567.     move.w    #$0080,d1
  1568.     IOCS    _JOYGET
  1569.     cmpi.l    #$54444D4B,d0
  1570.     bne    @f
  1571.     pea    LRTB(pc)        **すでに
  1572.     bra    PE    *end
  1573. @@:
  1574.     **セット
  1575.     moveq    #-1,d1
  1576.     IOCS    _SET232C
  1577.     move.l    d0,RSMOD        *常駐前の RS状態
  1578.  
  1579.     suba.l    a1,a1
  1580.     SUPER
  1581.     movea.l    d0,a1
  1582.  
  1583.     move.l    $400+_SET232C*4 ,_SET232C__
  1584.     move.l    $400+_ISNS232C*4,_ISNS232C__
  1585.     move.l    $400+_INP232C*4 ,_INP232C__
  1586.     move.l    $400+_LOF232C*4 ,_LOF232C__
  1587.  
  1588.     bsr    RSINIT
  1589.  
  1590.     move.l    MSD_,MSD_JMP+2
  1591.      lea    MSD-SS(a4),a0
  1592.      move.l    a0,MSD_
  1593.     move.l    JOYGET_,JOYGET_JMP+2
  1594.      lea    JOYGET-SS(a4),a0
  1595.      move.l    a0,JOYGET_
  1596.     move.l    SET232C_,SET232C_JMP+2
  1597.      lea    SET232C-SS(a4),a0
  1598.      move.l    a0,SET232C_
  1599.     move.l    MS_INIT_,MS_INIT_JMP+2
  1600.      lea    MS_INIT-SS(a4),a0
  1601.      move.l    a0,MS_INIT_
  1602.     move.l    MS_SEL_,MS_SEL_JMP+2
  1603.      lea    MS_SEL-SS(a4),a0
  1604.      move.l    a0,MS_SEL_
  1605.     move.l    MS_LIMIT_,MS_LIMIT_JMP+2
  1606.      lea    MS_LIMIT-SS(a4),a0
  1607.      move.l    a0,MS_LIMIT_
  1608.  
  1609.     USER
  1610.  
  1611.     bsr    keepsub
  1612.  
  1613.     pea    LRKP(pc)
  1614.     DOS    _PRINT
  1615.     addq    #4,sp
  1616.     clr.w    -(sp)
  1617.     move.l    #EndStatio-StartStatio,-(sp)
  1618.     DOS    _KEEPPR
  1619.  
  1620.     ****************
  1621. keepsub:
  1622.     pea    LR2(pc)
  1623.     DOS    _PRINT
  1624.     addq    #4,sp
  1625. ksL2:
  1626.     move.w    MoEmuMode(pc),d0
  1627.     beq    ksL3
  1628.     pea    LRZNN(pc)    *エミュレートしない
  1629.     DOS    _PRINT
  1630.     addq    #4,sp
  1631.     bra    ksL6
  1632. ksL3:    move.w    DrvMode(pc),d0        *座標モード *0:相対  $FF:絶対
  1633.     bne    @f
  1634.     pea    LRZSO(pc)
  1635.     bra    ksL5
  1636. @@:    moveq    #0,d0
  1637.     move.w    IM(pc),d0        *絶対座標モード時、最大移動値
  1638.     bne    @f
  1639.     pea    LRZZE1(pc)
  1640.     DOS    _PRINT
  1641.     addq    #4,sp
  1642.     bra    ksL4
  1643. @@:    move.l    d0,-(sp)
  1644.     pea    LRZZE2(pc)
  1645.     jsr    _printf_
  1646.     lea    8(sp),sp
  1647. ksL4:
  1648.     move.w    ZetMod(pc),d0        *絶対座標移動範囲モード
  1649.     add.w    d0,d0
  1650.     add.w    d0,d0
  1651.     lea.l    ksT1(pc),a1
  1652.     move.l    0(a1,d0.w),-(sp)
  1653. ksL5:
  1654.     DOS    _PRINT
  1655.     addq    #4,sp
  1656.  
  1657.     move.w    BotMod(pc),d0        *ボタンモード
  1658.     add.w    d0,d0
  1659.     add.w    d0,d0
  1660.     lea.l    ksT2(pc),a1
  1661.     move.l    0(a1,d0.w),-(sp)
  1662.     DOS    _PRINT
  1663.     addq    #4,sp
  1664.     moveq    #0,d0
  1665.     move.b    PressP(pc),d0
  1666.     move.l    d0,-(sp)
  1667.     pea    ksT2PB(pc)
  1668.     jsr    _printf_
  1669.     lea    8(sp),sp
  1670.  
  1671. ksL6:
  1672.         *キーモード
  1673.     btst.b    #0,KeyMod(pc)
  1674.     beq    ksL8
  1675.  
  1676.     pea    ksT3__(pc)
  1677.     DOS    _PRINT
  1678.     addq    #4,sp
  1679.     move.b    SftKey(pc),d1    *シフトキー
  1680.     lsr.b    #1,d1
  1681.     bcc    @f
  1682.     pea    ksT3_0(pc)
  1683.     DOS    _PRINT
  1684.     addq    #4,sp
  1685. @@:
  1686.     lsr.b    #1,d1
  1687.     bcc    @f
  1688.     pea    ksT3_1(pc)
  1689.     DOS    _PRINT
  1690.     addq    #4,sp
  1691. @@:
  1692.     lsr.b    #1,d1
  1693.     bcc    @f
  1694.     pea    ksT3_2(pc)
  1695.     DOS    _PRINT
  1696.     addq    #4,sp
  1697. @@:
  1698.     lsr.b    #1,d1
  1699.     bcc    @f
  1700.     pea    ksT3_3(pc)
  1701.     DOS    _PRINT
  1702.     addq    #4,sp
  1703. @@:
  1704.     pea    ksTBK1(pc)
  1705.     DOS    _PRINT
  1706.     addq    #4,sp
  1707. ksL8:
  1708.     btst.b    #1,KeyMod(pc)
  1709.     beq    @f
  1710.     pea    ksTBK2(pc)
  1711.     DOS    _PRINT
  1712.     addq    #4,sp
  1713. @@:
  1714.  
  1715.     rts
  1716.  
  1717. free:    *****************************常駐解除
  1718.     move.l    a3,d0
  1719.     bne    @f
  1720.     pea    LR8(pc)        **非常駐
  1721.     bra    PE    *end
  1722.  
  1723. @@:    cmpi.w    #$3F,d1
  1724.     beq    @f
  1725.     pea    LR4(pc)        **ベクタが占領
  1726.     bra    PE    *end
  1727.  
  1728. @@:    suba.l    a1,a1
  1729.     SUPER
  1730.     movea.l    d0,a1
  1731.  
  1732.     move.l    (MSD_JMP-SS)+2(a3),MSD_
  1733.     move.l    (JOYGET_JMP-SS)+2(a3),JOYGET_
  1734.     move.l    (SET232C_JMP-SS)+2(a3),SET232C_
  1735.     move.l    (MS_INIT_JMP-SS)+2(a3),MS_INIT_
  1736.     move.l    (MS_SEL_JMP-SS)+2(a3),MS_SEL_
  1737.     move.l    (MS_LIMIT_JMP-SS)+2(a3),MS_LIMIT_
  1738.  
  1739.     USER
  1740.  
  1741.     move.l    RSMOD-SS(a3),d1
  1742.     IOCS    _SET232C
  1743.  
  1744.     sub.l    #$00000F0,a3
  1745.     move.l    a3,-(sp)
  1746.     DOS    _MFREE
  1747.     addq    #4,sp
  1748.  
  1749.     pea    LR3(pc)
  1750. PE:    DOS    _PRINT
  1751.     addq.w    #4,sp
  1752.     DOS    _EXIT
  1753.  
  1754. _printf_:******************(Cライク)
  1755.     link    a6,#0
  1756.     movem.l    d3-d7/a3-a5,-(sp)
  1757.     movea.l    8(a6),a4
  1758.     lea.l    12(a6),a5
  1759.     moveq    #0,d1
  1760.     moveq    #' ',d6
  1761.  
  1762. prL1:    move.b    (a4)+,d1
  1763.     beq    pri_end
  1764.     cmpi.b    #'%',d1
  1765.     beq    pri_kazu
  1766.     andi.w    #$00FF,d1
  1767.     move.w    d1,-(sp)
  1768.     DOS    _PUTCHAR
  1769.     addq    #2,sp
  1770.     bra    prL1
  1771.  
  1772. pri_kazu:
  1773.     move.l    (a5)+,d7    *数
  1774.     move.b    (a4)+,d1
  1775.     beq    pri_end
  1776.     cmpi.b    #'2',d1
  1777.     beq    pr_K2
  1778.     cmpi.b    #'3',d1
  1779.     beq    pr_K3
  1780.     cmpi.b    #'4',d1
  1781.     beq    pr_K4
  1782.     andi.w    #$00FF,d1
  1783.     move.w    d1,-(sp)
  1784.     DOS    _PUTCHAR
  1785.     addq    #2,sp
  1786.     bra    prL1
  1787.  
  1788. pr_K4:
  1789.     divu    #1000,d7
  1790.     move.w    d7,d1
  1791.     beq    @f
  1792.     moveq    #'0',d6
  1793. @@:
  1794.     add.b    d6,d1
  1795.     andi.w    #$00FF,d1
  1796.     move.w    d1,-(sp)
  1797.     DOS    _PUTCHAR
  1798.     addq    #2,sp
  1799.     swap    d7
  1800.     andi.l    #$0000FFFF,d7
  1801. pr_K3:
  1802.     divu    #100,d7
  1803.     move.w    d7,d1
  1804.     beq    @f
  1805.     moveq    #'0',d6
  1806. @@:
  1807.     add.b    d6,d1
  1808.     andi.w    #$00FF,d1
  1809.     move.w    d1,-(sp)
  1810.     DOS    _PUTCHAR
  1811.     addq    #2,sp
  1812.     swap    d7
  1813.     andi.l    #$0000FFFF,d7
  1814. pr_K2:
  1815.     move.w    d7,d1
  1816.     divu    #10,d1
  1817.     tst.w    d1
  1818.     beq    @f
  1819.     moveq    #'0',d6
  1820. @@:
  1821.     add.b    d6,d1
  1822.     andi.w    #$00FF,d1
  1823.     move.w    d1,-(sp)
  1824.     DOS    _PUTCHAR
  1825.     addq    #2,sp
  1826.     swap    d1
  1827.     addi.b    #'0',d1
  1828.     andi.w    #$00FF,d1
  1829.     move.w    d1,-(sp)
  1830.     DOS    _PUTCHAR
  1831.     addq    #2,sp
  1832.     moveq    #' ',d6
  1833.     bra    prL1
  1834.  
  1835. pri_end:
  1836.     movem.l    (sp)+,d3-d7/a3-a5
  1837.     unlk    a6
  1838.     rts
  1839.  
  1840. LR2:    dc.b    ' RS-232C PORT の `ArtPad` が使用出来ます。',$0d,$0a,0
  1841.     .even
  1842. LRZSO:    .dc.b    ' 相対座標モードでマウスエミュレートします。',$0d,$0a,0
  1843.     .even
  1844. LRZZE1:    .dc.b    ' 絶対座標モード1でマウスエミュレートします。',$0d,$0a,0
  1845.     .even
  1846. LRZZE2:    .dc.b    ' 絶対座標モード2[%3]でマウスエミュレートします。',$0d,$0a,0
  1847.     .even
  1848. LRZNN:    .dc.b    ' マウスエミュレートしません。',$0d,$0a,0
  1849.     .even
  1850. LRKP:    .dc.b    ' 常駐しました。',$0d,$0a,0
  1851.     .even
  1852. LR3:    dc.b    ' 常駐解除しました。',$0d,$0a,0
  1853.     .even
  1854. LR4:    dc.b    ' ベクタが占領されています。',$0d,$0a,0
  1855.     .even
  1856. LR5:    .dc.b    ' 設定を変更しました。',$0d,$0a,0
  1857.     .even
  1858. LR6:    .dc.b    ' コマンドラインが異常です。',$0d,$0a,0
  1859.     .even
  1860. LR7:    .dc.b    ' スイッチが異常です。',$0d,$0a,0
  1861.     .even
  1862. LR8:    .dc.b    ' 常駐していません。',$0d,$0a,0
  1863.     .even
  1864. LRTB:    .dc.b    " 既に'TBDRV'系のドライバーが常駐しているようです。",$0d,$0a,0
  1865.     .even
  1866.  
  1867. ksT1:
  1868.     .dc.l    ksTSMS1,ksTSMS2,ksTSMS3
  1869. ksTSMS1:.dc.b    ' 絶対座標範囲はMS_LIMITのよるオートです。',$0d,$0a,0
  1870. ksTSMS2:.dc.b    ' 絶対座標範囲はCRTMODによるオートです。',$0d,$0a,0
  1871. ksTSMS3:.dc.b    ' 絶対座標範囲は512x512に固定です。',$0d,$0a,0
  1872.     .even
  1873. ksT2:
  1874.     .dc.l    ksTBM1,ksTBM2,ksTBM3
  1875. ksTBM1:    .dc.b    ' ボタンは ノーマル型 [左=プレス,右=サイドスイッチ] です。',$0d,$0a,0
  1876. ksTBM2:    .dc.b    ' ボタンは リバース型 [左=サイドスイッチ,右=プレス] です。',$0d,$0a,0
  1877. ksTBM3:    .dc.b    ' ボタンは PC-9801P型 [左=プレス,右=サイドスイッチ+プレス] です。',$0d,$0a,0
  1878.     .even
  1879. ksT2PB:    .dc.b    ' ペン先プレスは[%3]以上で押されたとします。',$0d,$0a,0
  1880.     .even
  1881. ksTBK1:    .dc.b    '{[XF3]~[XF5]}でマウスエミュレートモードを変更出来ます。',$0d,$0a,0
  1882. ksTBK2:    .dc.b    ' [XF1],[XF2]でX,Yのみ移動出来ます。',$0d,$0a,0
  1883.     .even
  1884. ksT3__:    .dc.b    ' ',0
  1885. ksT3_0:    .dc.b    '[SHIFT]+',0
  1886. ksT3_1:    .dc.b    '[CTRL]+',0
  1887. ksT3_2:    .dc.b    '[OPT.1]+',0
  1888. ksT3_3:    .dc.b    '[OPT.2]+',0
  1889.     .even
  1890.  
  1891. SwcI:    .dc.w    0    :/Iなら -1
  1892.  
  1893. LRH:
  1894.     .dc.b    $0d,$0a
  1895.     .dc.b    '使用法:ArtPad.x [switch]',$0d,$0a
  1896.     .dc.b    '    /R ・・・・ 常駐解除します。',$0d,$0a
  1897.     .dc.b    '    /D ・・・・ 相対座標モードでマウスエミュレートします。(def.)',$0d,$0a
  1898.     .dc.b    '    /P ・・・・ 絶対座標モード1でマウスエミュレートします。',$0d,$0a
  1899.     .dc.b    '    /P[n] ・ 最大移動値[n]で絶対座標モード2でマウスエミュレートします。',$0d,$0a
  1900.     .dc.b    '    /N ・・・・ マウスエミュレートはしません。',$0d,$0a
  1901.     .dc.b    '    /S0 ・・・ 絶対座標用。MS_LIMITの範囲による移動範囲を判別。(def.)',$0d,$0a
  1902.     .dc.b    '    /S1 ・・・ 絶対座標用。CRTMODによる移動範囲を判別。',$0d,$0a
  1903.     .dc.b    '    /S2 ・・・ 絶対座標用。512x512画面専用にします。',$0d,$0a
  1904.     .dc.b    '    /B0 ・・・ マウスボタンエミュ ノーマル型 [左=プレス,右=サイドスイッチ] (def.)',$0d,$0a
  1905.     .dc.b    '    /B1 ・・・ マウスボタンエミュ リバース型 [左=サイドスイッチ,右=プレス]',$0d,$0a
  1906.     .dc.b    '    /B2 ・・・ マウスボタンエミュ PC-9801P型 [左=プレス,右=サイドスイッチ+プレス]',$0d,$0a
  1907.     .dc.b    '    /BP[n]  マウスボタンエミュ ペン先プレスが[n]以上(16~100)で押したとします。',$0d,$0a
  1908.     .dc.b    '    /K0 ・・・ キーによる割り込み無し。',$0d,$0a
  1909.     .dc.b    '    /K1 ・・・ キーによるモード変更のみ。',$0d,$0a
  1910.     .dc.b    '    /K2 ・・・ キーによる水平垂直移動制限機能のみ。',$0d,$0a
  1911.     .dc.b    '    /K3 ・・・ キーによる機能あり。(def.)',$0d,$0a
  1912.     .dc.b    '    /KS[n]  キー機能のシフトキー設定(def.8 = [OPT2])',$0d,$0a
  1913.     *.dc.b    '    /I ・・・・ 'TBDRV'系のドライバがあっても常駐する。',$0d,$0a
  1914.     *.dc.b    $0d,$0a
  1915.     *.dc.b    '        TABLET CALL Ver. 0.92
  1916.     .dc.b    $0d,$0a,0
  1917.     .even
  1918. LR1:    .dc.b    'X68k WACOM mini tablet `ArtPad` DRIVER Version 0.53 Copyright 1994 TNB製作所',$0d,$0a,0
  1919.     .even
  1920.  
  1921.     .ds.b    2048
  1922. usrsp:
  1923.  
  1924.  
  1925.  
  1926.